﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GC2.Bussines;
using GC2.Bussines.BMAdmin;
using GC2.Entities.Admin;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;

public partial class Informes_porEgreso : GenericPage
{
    #region Propiedades
    Usuarios usuario = new Usuarios();
    List<Egresos> listaEgresos = new List<Egresos>();
    #endregion

    #region Controles

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!IsPostBack)
            {
                usuario = (Usuarios)Session["UsuarioActual"];
                lblAccion.Text = "Seleccione Período a Evaluar";
                Conceptos concepto = new Conceptos();
                concepto = (Conceptos)Session["Concepto"];
                txtCodigo.Text = concepto.Id_Concepto.ToString();
                txtNombre.Text = concepto.Concepto;

                DateTime dHoy = DateTime.Now.Date;
                FechaH.SetFecha(dHoy);
                string sFecha = SetearFecha();
                FechaD.SetFecha(Convert.ToDateTime(sFecha));
                CargarCCostos(2);
                rdbTodos.Checked = true;
                cboCCostos.Enabled = false;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    protected void gvEgresos_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvEgresos.PageIndex = e.NewPageIndex;
        CargarGrilla();
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/Seguridad/Default.aspx", false);
    }

    protected void btnVer_Click(object sender, EventArgs e)
    {
        try
        {
            int iCodigo = Convert.ToInt16(txtCodigo.Text);
            if (iCodigo > 0)
            {
                BuscarEgresos();
            }
            else
            {
                Todos();
            }
            CargarGrilla();
            btnVer.Enabled = false;
            lblAccion.Text = "Resultado del período";
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    protected void btnOtro_Click(object sender, EventArgs e)
    {
        try
        {
            Response.Redirect("~/Informes/EgresosAdmin.aspx", false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    #region rdbActivos_CheckedChanged CCostos
    protected void rdbActivos_CheckedChanged(object sender, EventArgs e)
    {
        try
        {
            if (rdbActivos.Checked)
            {
                rdbTodos.Checked = false;
                cboCCostos.Enabled = true;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region rdbTodos_CheckedChanged CCostos
    protected void rdbTodos_CheckedChanged(object sender, EventArgs e)
    {
        try
        {
            if (rdbTodos.Checked)
            {
                rdbActivos.Checked = false;
                cboCCostos.SelectedIndex = 0;
                cboCCostos.Enabled = false;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion

    #region Métodos

    #region Limpiar
    protected void Limpiar()
    {
        try
        {
            lblAccion.Text = "Seleccione Período a Evaluar";
            lblTipo.Text = "";
            lblCantidad.Text = "";
            lblTotal.Text = "";
            List<Egresos> listaEgresos = new List<Egresos>();
            Session["listaEgresos"] = listaEgresos;
            CargarGrilla();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    private void CargarGrilla()
    {
        try
        {
            listaEgresos = (List<Egresos>)Session["listaEgresos"];
            gvEgresos.DataSource = listaEgresos;
            gvEgresos.DataBind();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    protected void BuscarEgresos()
    {
        try
        {
            List<Egresos> listaEgresos = new List<Egresos>();
            BMEgresos bmEgresos = new BMEgresos(Connection);
            Egresos egresoD = new Egresos();
            Egresos egresoH = new Egresos();
            Conceptos concepto = (Conceptos)Session["Concepto"];
            egresoD.Id_Concepto = concepto.Id_Concepto;
            egresoD.Fecha = FechaD.GetFecha();
            egresoH.Fecha = FechaH.GetFecha();
            if (rdbTodos.Checked)
            {
                egresoD.CCostos = 999;  //  reservado para pasar como null este argumento.
            }
            else
            {
                egresoD.CCostos = Convert.ToInt16(cboCCostos.SelectedItem.Value);
            }

            listaEgresos = bmEgresos.BMEgresosSearch(egresoD, egresoH);

            int iCantidad = 0;
            Decimal dTotal = 0;
            if (listaEgresos.Count > 0)
            {
                foreach (Egresos egreso in listaEgresos)
                {
                    iCantidad++;
                    dTotal += egreso.Monto;
                }
                lblCantidad.Text = iCantidad.ToString();
                lblTotal.Text = dTotal.ToString();
                lblTipo.Text = "Informe de Egresos con este Coincepto para el período";
            }
            else
            {
                lblCantidad.Text = "0";
                lblTotal.Text = "0";
                lblTipo.Text = "No hay Egresos con este Concepto en este período";
            }

            Session["listaEgresos"] = listaEgresos;

        }
        catch (Exception ex) { ErrorUI(ex); }
    }

    protected void Todos()
    {
        try
        {
            List<Egresos> listaEgresos = new List<Egresos>();
            List<Egresos> listaTemp = new List<Egresos>();
            BMEgresos bmEgresos = new BMEgresos(Connection);
            Egresos egresoD = new Egresos();
            Egresos egresoH = new Egresos();
            egresoD.Id_Concepto = 0;
            egresoD.Fecha = FechaD.GetFecha();
            egresoH.Fecha = FechaH.GetFecha();
            if (rdbTodos.Checked)
            {
                egresoD.CCostos = 999;  //  reservado para pasar como null este argumento.
            }
            else
            {
                egresoD.CCostos = Convert.ToInt16(cboCCostos.SelectedItem.Value);
            }
            listaTemp = bmEgresos.BMEgresosSearch(egresoD, egresoH);

            if (chkSinCompras.Checked)
            {
                foreach (Egresos item in listaTemp)
                {
                    if (item.Id_Concepto > 1002)
                    {
                        listaEgresos.Add(item);
                    }
                }
            }
            else
            {
                listaEgresos = listaTemp;
            }

            int iCantidad = 0;
            Decimal dTotal = 0;
            if (listaEgresos.Count > 0)
            {

                foreach (Egresos egreso in listaEgresos)
                {
                    iCantidad++;
                    dTotal += egreso.Monto;
                }
                lblCantidad.Text = iCantidad.ToString();
                lblTotal.Text = dTotal.ToString();
                lblTipo.Text = "Informe de Egresos con este Coincepto para el período";
            }
            else
            {
                lblCantidad.Text = "0";
                lblTotal.Text = "0";
                lblTipo.Text = "No hay Egresos con este Concepto en este período";
            }

            Session["listaEgresos"] = listaEgresos;

        }
        catch (Exception ex)
        { throw ex; }
    }

    #region CargarCCostos
    private void CargarCCostos(int iAccion)
    {
        try
        {
            List<CentrosCostos> listaCCostos = new List<CentrosCostos>();
            BMCentrosCostos bmCCostos = new BMCentrosCostos(Connection);
            if (iAccion == 1)
            {
                listaCCostos = bmCCostos.BMCentrosCostosGetAllActivos();
            }
            else
            {
                listaCCostos = bmCCostos.BMCentrosCostosGetAll();
            }
            foreach (CentrosCostos ccostos in listaCCostos)
            {
                ListItem liItem = new ListItem();
                liItem.Value = ccostos.IdCentrosCostos.ToString();
                liItem.Text = ccostos.Nombre;
                cboCCostos.Items.Add(liItem);
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion
}
